/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.Maestros.Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import pe.edu.pucp.Maestros.Controlador.CargaXML.ClientesControlador;
import pe.edu.pucp.Maestros.Controlador.CargaXML.EnvioControlador;
import pe.edu.pucp.Maestros.Controlador.CargaXML.PaqueteControlador;
import pe.edu.pucp.Maestros.DAO.ClientesDAO;
import pe.edu.pucp.Maestros.DAO.EnvioDAO;
import pe.edu.pucp.Maestros.DAO.PaqueteDAO;
import pe.edu.pucp.Maestros.Vista.CargaXMLGUI;
import pe.edu.pucp.Modelo.Permiso;
import pe.edu.pucp.Modelo.Usuario;

/**
 *
 * @author oscar
 */
public class DatosSimulacionControlador {
    private CargaXMLGUI view;
    private ClientesControlador cliente;
    private EnvioControlador envio;
    private PaqueteControlador paquete;
    private Usuario usr;
    
    public DatosSimulacionControlador(CargaXMLGUI v, Usuario user) {
        this.view = v;  
        this.usr = user;
        view.mostrarPermisos(new  ArrayList<Permiso>(user.getPerfil().getPermisos())); 
        view.addCargarDatosSimulacionlistener(new CargarButtonListener());
        view.addBuscarDatosSimulacionListener(new AbrirFile());
    }
    
    public int CarpetaCorrecta(String direccion){
            File dir = new File(direccion);
            if(!dir.isDirectory()){
                return 0;
            }      
            String[] ficheros = dir.list();
            int numarchivos = ficheros.length;            
            int b = 0;
            for (int a=0;a<numarchivos;a++){
                if (ficheros[a].equals("CLIENTES.xml")){
                    b++;
                    break;
                }
            }
            for (int a=0;a<numarchivos;a++){            
                if (ficheros[a].equals("ENVIO.xml")){
                    b++;
                    break;
                }
            }
            for (int a=0;a<numarchivos;a++){            
                if (ficheros[a].equals("PAQUETE.xml")){
                    b++;
                    break;
                }
            }
            return b;     
    }
    
    class AbrirFile implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            JFileChooser filechooser = new JFileChooser();
            filechooser.setDialogTitle("Abrir archivo en");
            filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            int result = filechooser.showOpenDialog(null); 
            if (result == JFileChooser.APPROVE_OPTION){
                File f = filechooser.getSelectedFile();            
                if (CarpetaCorrecta(f.getPath()) == 3)
                view.setNombreArchivoDatosSimulacion(f.getPath());
                else{
                    view.mostrarError("No se encuentra todos los archivos en la carpeta");
                    view.setNombreArchivoDatosSimulacion("");
                }
            }         
        }     
    }
    
    class CargarButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            if(view.getNombreArchivoDatosSimulacion().equals("")){
                view.setNombreArchivoDatosIniciales("");
                view.mostrarError("Escoja una carpeta para cargar los datos");
            }
            else {
                cliente = new ClientesControlador(new ClientesDAO(), view);
                cliente.CargarPrueba(usr);

                envio = new EnvioControlador(new EnvioDAO(), view);
                envio.CargarPrueba(usr);

                paquete = new PaqueteControlador(new PaqueteDAO(), view);
                paquete.CargarPrueba();

                view.setNombreArchivoDatosSimulacion("");
                view.mostrarConformidad("Datos de Simulacion Cargados");

                view.getbtnAbrirDInicial().setEnabled(false);
                view.getbtnCargarDInicial().setEnabled(false);
                view.getbtnAbrirDVuelo().setEnabled(false);
                view.getbtnCargarDVuelo().setEnabled(false);
                view.getbtnAbrirDSimulacion().setEnabled(false);
                view.getbtnCargarDSimulacion().setEnabled(false);

                view.vc.cargado=true;
            }
        }
    }
    
    
    
}
